﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Data;

namespace prjMateriais
{
    public partial class frmCadMaterial : FormCadastroPadrao.FormCadastro
    {

        public frmCadMaterial()
        {
            InitializeComponent();
            this.tabela = ConstTabelas.MATERIAL;
            loadDados();

            loadCombos(ConstTabelas.SITUAÇAOMATERIAL, ConstTabelas.SITUAÇAOMATERIAL_PK, cboSituacao);
            loadCombos(ConstTabelas.FABRICANTE, ConstTabelas.DIVISAOFABRICANTE_PK, cboFabricante);
            loadCombos(ConstTabelas.DIVISAOFABRICANTE, ConstTabelas.DIVISAOFABRICANTE_PK, cboDivisaoFabricante);// ver se não tem q ser associado ao fabricante selecionado
            loadCombos(ConstTabelas.TIPOMATERIAL, ConstTabelas.TIPOMATERIAL_PK, cboTipo);
            loadCombos(ConstTabelas.FAMILIAMATERIAL, ConstTabelas.FAMILIAMATERIAL_PK, cboFamilia);
            loadCombos(ConstTabelas.GRUPOMATERIAL, ConstTabelas.GRUPOMATERIAL_PK, cboGrupo);
            loadCombos(ConstTabelas.UNIDADEMEDIDA, ConstTabelas.UNIDADEMEDIDA_PK, cboUnidade);
        }

        public void loadDados()
        {
            Dados codigo = new Dados(ConstTabelas.MATERIAL_PK, txtbxCodigo.Name, false, true, Dados.tipo.numero, "Código");
            Dados descricao = new Dados("Nome", txtbxDescricao.Name, false, false, Dados.tipo.texto, "Descrição");
            Dados situacaoMaterial = new Dados("CodigoSituacao", cboSituacao.Name, true, false, Dados.tipo.numero, "Situacao");
            Dados Fabricante = new Dados("CodigoFabricante", cboFabricante.Name, true, false, Dados.tipo.numero, "Fabricante");
            Dados divisaoFabricante = new Dados("CodigoDivisaoFabricante", cboDivisaoFabricante.Name, true, false, Dados.tipo.numero, "Divisao do Fabricante");
            Dados tipo = new Dados("CodigoTipoMaterial", cboTipo.Name, true, false, Dados.tipo.numero, "Tipo");
            Dados familia = new Dados("CodigoFamilia", cboFamilia.Name, true, false, Dados.tipo.numero, "Familia");
            Dados grupo = new Dados("CodigoGrupo", cboGrupo.Name, true, false, Dados.tipo.numero, "Grupo");
            Dados unidade = new Dados("CodigoUnidadeMedida", cboUnidade.Name, true, false, Dados.tipo.texto, "Unidade de Medida");
            Dados EstoqueMinimo = new Dados("EstoqueMinimo", nmrcpdwnEstoqueMinimo.Name, true, false, Dados.tipo.numero, "Estoque Minimo");
            Dados situacao = new Dados("Situacao", chckbxAtivo.Name, true, false, Dados.tipo.sim_nao, "Ativo");
            Dados controlaValidade = new Dados("ControlaValidade", chckbxControlaValidade.Name, true, false, Dados.tipo.sim_nao, "Controla Validade");

            Dados resultado = new Dados("Resultado", nmrcpdwnEstoqueMinimo.Name, true, false, Dados.tipo.numero, "Resultado");

            this.campos = new List<Dados>();
            this.campos.Add(codigo);
            this.campos.Add(descricao);
            this.campos.Add(situacaoMaterial);
            this.campos.Add(Fabricante);
            this.campos.Add(divisaoFabricante);
            this.campos.Add(tipo);
            this.campos.Add(familia);
            this.campos.Add(grupo);
            this.campos.Add(unidade);
            this.campos.Add(EstoqueMinimo);
            this.campos.Add(situacao);
            this.campos.Add(controlaValidade);
        }

        public void loadCombos(string tabela, string codigo, ComboBox combo)
        {
            DataTable dados = Conexao.getInstance.executeQuery(SqlCrud.getInstance.selectAll(tabela));
            combo.DataSource = dados;
            combo.DisplayMember = "Nome";
            combo.ValueMember = codigo;
        }

        private void txtbxCodigoSituacao_TextChanged(object sender, EventArgs e)
        {

        }

        private void txtbxDescricaoSituacao_TextChanged(object sender, EventArgs e)
        {

        }

        private void lblSituacao_Click(object sender, EventArgs e)
        {

        }

        private void frmCadMaterial_Shown(object sender, EventArgs e)
        {
            loadCombos(ConstTabelas.SITUAÇAOMATERIAL, ConstTabelas.SITUAÇAOMATERIAL_PK, cboSituacao);
            loadCombos(ConstTabelas.FABRICANTE, ConstTabelas.DIVISAOFABRICANTE_PK, cboFabricante);
            loadCombos(ConstTabelas.DIVISAOFABRICANTE, ConstTabelas.DIVISAOFABRICANTE_PK, cboDivisaoFabricante);// ver se não tem q ser associado ao fabricante selecionado
            loadCombos(ConstTabelas.TIPOMATERIAL, ConstTabelas.TIPOMATERIAL_PK, cboTipo);
            loadCombos(ConstTabelas.FAMILIAMATERIAL, ConstTabelas.FAMILIAMATERIAL_PK, cboFamilia);
            loadCombos(ConstTabelas.GRUPOMATERIAL, ConstTabelas.GRUPOMATERIAL_PK, cboGrupo);
            loadCombos(ConstTabelas.UNIDADEMEDIDA, ConstTabelas.UNIDADEMEDIDA_PK, cboUnidade);

            if (!this.insert)
            {
                cboSituacao.SelectedValue = this.indexCombo[0];
                cboFabricante.SelectedValue = this.indexCombo[1];
                cboDivisaoFabricante.SelectedValue = this.indexCombo[2];
                cboTipo.SelectedValue = this.indexCombo[3];
                cboFamilia.SelectedValue = this.indexCombo[4];
                cboGrupo.SelectedValue = this.indexCombo[5];
                cboUnidade.SelectedValue = this.indexCombo[6];
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            decimal resultado = Convert.ToDecimal(nmrcpdwnEstoqueMinimo.Value) * Convert.ToDecimal(txtMulti.Text);
            
            txtResultado.Text = resultado.ToString();
           
           
            Conexao.getInstance.execute("update material set Resultado = " + resultado.ToString().Replace(",",".")+ "where codigo = " + txtbxCodigo.Text);
            

            MessageBox.Show("update material set Resultado = " + resultado.ToString() + " where codigo = " + txtbxCodigo.Text);
        }
    }
}
